#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
using namespace std;



int maxArea(vector<int>& height) {
    int left = 0;
    int right = height.size() - 1;
    vector<int> v;
    while (left<right)
    {
        if (height[left] < height[right])
        {
            int capacity = (right - left) * height[left];
            v.push_back(capacity);
            int cur = left + 1;
            while (cur < right && height[cur] <= height[left])
            {
                cur++;
            }
            left = cur;
        }
        else
        {
            int capacity = (right - left) * height[right];
            v.push_back(capacity);
            int cur = right - 1;
            while (cur > left && height[cur] <= height[right])
            {
                cur--;
            }
            right = cur;
        }
    }
    int max = 0;
    for (auto e : v)
    {
        if (e > max)
            max = e;
    }
    return max;
}

int main()
{
    vector<int> height = { 2,3,4,5,18,17,6 };
    maxArea(height);
    return 0;
}
//void duplicateZeros(vector<int>& arr) 
//{
//    int dst = -1;
//    int cur = -1;
//    int size = arr.size() - 1;
//    while(dst<size)
//    {
//        cur++;
//        if (arr[cur] == 0)
//            dst++;
//        dst++;
//    }
//    while (cur >= 0)
//    {
//        if (arr[cur] == 0)
//        {
//            if (dst < arr.size())
//                arr[dst--] = 0;
//            else
//                dst--;
//        }
//        arr[dst--] = arr[cur--];
//    }
//}
//
//int main()
//{
//    vector<int> arr = { 1,0,2,3,0,4,5,0 };
//    duplicateZeros(arr);
//    for (auto e : arr)
//    {
//        cout << e << " ";
//    }
//    cout << endl;
//}
//class Solution {
//public:
//    void moveZeroes(vector<int>& nums) {
//        int dst = -1;
//        int cur = 0;
//        int size = nums.size();
//        for (; cur < size; cur++)
//        {
//            if (nums[cur] != 0 && ++dst != cur)
//            {
//                swap(nums[cur], nums[dst]);
//            }
//        }
//    }
//};

//class Solution {
//public:
//    void change(int& n)
//    {
//        int sum = 0;
//        while (n)
//        {
//            int tmp = n % 10;
//            sum = sum + tmp * tmp;
//            n /= 10;
//        }
//        n = sum;
//    }
//    bool isHappy(int n) {
//        int slow = n;
//        int fast = n;
//        change(slow);
//        change(fast);
//        change(fast);
//        while (fast != slow)
//        {
//            change(slow);
//            change(fast);
//            change(fast);
//        }
//        return fast == 1;
//    }
//};